package cn.itcast.nems.order.api;

import cn.itcast.ic.common.exception.v2.BizException;
import cn.itcast.nems.order.dto.JournalDiscountApiReqDTO;
import cn.itcast.nems.order.dto.JournalDiscountApiResDTO;

import java.util.List;

/**
 * 优惠单相关API
 */
public interface JournalDiscountApi {

    /**
     * 核销优惠单
     *
     * @param params 请求参数
     * @throws BizException 核销失败会抛出异常
     * @author 高昌露
     * @since 2023/12/9 17:47
     */
    void writeOff(JournalDiscountApiReqDTO params) throws BizException;

    /**
     * 校验优惠单是否可用
     *
     * @param params 请求参数
     * @return boolean true:可用
     * @author 高昌露
     * @since 2023/12/10 9:48
     */
    boolean validityVerify(JournalDiscountApiReqDTO params);

    /**
     * 根据凭单行Id查询优惠信息
     *
     * @param params 请求参数
     * @return cn.itcast.nems.order.dto.JournalDiscountApiResDTO 优惠信息
     * @author 高昌露
     * @since 2023/12/10 16:24
     */
    JournalDiscountApiResDTO queryByLineId(JournalDiscountApiReqDTO params);

    /**
     * 根据条件查询可用于使用的优惠单信息
     *
     * @param params 请求参数
     * @return java.util.List<cn.itcast.nems.order.dto.JournalDiscountResDTO>
     * @author 高昌露
     * @since 2023/12/10 10:11
     */
    List<JournalDiscountApiResDTO> usableList(JournalDiscountApiReqDTO params);
}
